/*
 * Juego.cpp
 *
 *  Created on: 18/10/2012
 *      Author: Ignacio Galvez
 */
#include "Juego.h"
#include "Nivel.h"
#include "Mundo.h"
#include "Partida.h"
#include "Motor.h"
#include <iostream>
Juego::Juego():mundoActual(NULL), nivelActual(NULL),
motor(NULL), enEspera(true), cantidadActualDeJugadores(1) {
motor = new Motor;
}

Partida* Juego::crearPartida() {
	//  motor = new Motor(NivelActual);
	partida = new Partida(60, 0);
	return partida;
}

void Juego::iniciarPartida() {
	enEspera = false;
}

Jugador* Juego::agregarJugador(std::string& nombreJugador) {
Jugador* jugador =	motor->agregarJugador(nombreJugador);
jugadores[nombreJugador] = jugador;
return jugador;
}

bool Juego::finalizoNivel() {
	return ((!(motor->perdioNivel()))&&(motor->ganoNivel()))||
	((!motor->ganoNivel())&&(motor->perdioNivel()));
}

void Juego::run(double ticks) {
	//char c;
	//if (!enEspera) {
	motor->actualizarEstado(ticks);
	//std::cout <<"no es el motor"<<std::endl;
	partida->agregar(motor->getHuevos());
	partida->agregar(motor->getPajaros());
	partida->agregar(motor->getCajas());
	partida->agregar(motor->getCerditos());
	partida->agregar(motor->getBonificables());
	partida->agregar(motor->getMonticuloDeHuevos());
	//std::cin >> c;
	//std::cout<< "finalizando el loop de run"<<std::endl;
	//}
	
}
void Juego::nuevoRecord() {

}
void Juego::pausarPartida() {
enEspera = true;
}
void Juego::consultarRecords() {

}

void Juego::reanudar() {
	enEspera = false;
}

void Juego::elegirNivel(int numeroNivel) {
	nivelActual = mundoActual->cargarNivel(numeroNivel);
}
void Juego::elegirMundo(std::string nombreMundo) {
	if (mundos.find(nombreMundo) != mundos.end())
		mundoActual = mundos[nombreMundo];
}


Juego::~Juego() {}
